I'm sure you've all heard of the automated testing pyramid, I'll describe it briefly here, but you can read all about it here. It's essentially a strategy that shows good practice ratio of Acceptance Tests (generally UI) to Integration Tests to Unit Tests, and here it is here in a simple form. It states that it is a good ratio to have your testing covered with 10% of acceptance tests, 20 % integration tests and 70% unit tests. Why is that you may ask? The primary focus of this is on Return on Investment, by finding bugs/breakages at Unit test level you are finding cheap bugs, as Unit Tests are quick and easy to maintain, whereas acceptance tests, whilst having value, are harder to maintain and take longer to run. Obviously, it's not a strict ratio, but I think it's a good practice to try and live by. However, I digress, the main point of this post is to put another spin on the automation triangle, and is possibly more QA centric than the automation pyramid, as I don't often see (rightly or wrongly) QA getting involved in creation of Unit Tests/Integration tests, I feel you can visualise the ratio in an easier way, and that is in the form of an Iceberg.
Interesting Fact: only around 11% of an iceberg is actually visible... Now if we apply that interesting fact to automated testing, (I guess you can see where I am going with this) we can say that the 11% that we can see as QA is the acceptance tests, these are tests that in general have been driven by the QA and are what will often fall into our domain to maintain and create. The remaining 89%, are more dev focused, in that unit tests and integration tests are generally maintained by the developers, and not the QA department (at least in my experience). So this allows the QA team to work on acceptance tests and get them working effectively, and leaving the Unit and Integration tests to the developers (although it is definitely wise to get involved as much as you can). Please don't think I'm saying that unit tests aren't important (quite the opposite as my previous blog posts will attest to), as QA need to be aware of what Unit Tests and Integration tests are to be run, as this will influence what tests are run as part of the acceptance tests, you only have to look at the Titanic to see what happened there when the rest of the iceberg was ignored. |